<?php
/**
 * 异常类
 */

namespace core;
use Exception;

class Error extends Exception{

	public static function register(){
		error_reporting(E_ALL);
		register_shutdown_function(array('core\DebugLog', 'write'));
		// 自定义的异常处理函数
		set_exception_handler(array('core\Error', 'exception'));
		// 自定义的错误处理函数
		set_error_handler(array('core\Error', 'errorInfo'));
	}

	/**
	 * code 错误代码
	 	msg 错误信息
	 	file 发生错误的文件
	 	line 行号
	 */
	public static function errorInfo($code, $msg, $file, $line) {
		// 定界符前后不能有空格，而且要单独占一行
		echo <<<EOF
			<ul style="font-size:18px; list-style:none;">
				<li><h3>错误:$msg</h3></li>
				<li>错误文件：$file</li>
				<li>行号：$line</li>
			</ul>
EOF;
	}

	public static function exception($e) {
		$data = $e->getTrace();
		// var_dump($data);
		$msg = $e->getMessage();
		$file = $data[1]['file'];
		$line = $data[1]['line'];
		echo <<<EOF
			<ul style="font-size:18px; list-style:none;">
				<li><h3>错误:$msg</h3></li>
				<li>错误文件：$file</li>
				<li>行号：$line</li>
			</ul>
EOF;
	}
}